#!/usr/bin/env node

// Node cli应用入口文件必须要有这样的文件头
// 如果是linux或mac系统还需要修改此文件的读写权限为755  chmod 755 cli.js
// console.log('cli working...');
// 通过yarn link的方式link到全局

// 脚手架的工作过程
/*
  1. 通过命令行交互询问用户问题
  2. 根据用户回答的结果生成文件
*/

const inquire = require('inquirer');
const path = require('path');
const fs = require('fs');
const ejs = require('ejs');

inquire.prompt([{
  type: 'input',
  name: 'name',
  message: 'your project name...'
}]).then(answer => {
  console.log(answer, 'eee');
  // 根据用户回答的结果生成文件
  // 模板目录
  const tmplDir = path.join(__dirname, 'templates');
  // 目标目录
  const destDir = process.cwd(); // 一般命令在哪个目录执行，就将哪个目录设置为目标目录
  // 将模板下的文件全部转换到目标目录
  // 拿到目标目录下的所有文件，执行回调函数
  fs.readdir(tmplDir, (err, files) => {
    if (err) throw err;
    files.forEach(file => {
      // 通过模板引擎渲染文件
      ejs.renderFile(path.join(tmplDir, file), answer, (err, result) => {
        if (err) throw err;
        // 将结果写入目标文件路径
        fs.writeFileSync(path.join(destDir, file), result);
      })
    })
  });
})
